package com.itheima.reggie.exception;


import com.itheima.reggie.common.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.sql.SQLIntegrityConstraintViolationException;


//@RestControllerAdvice  切面类御用注解  用在类上  声明此为切面类
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
      //异常处理方法  注解  用在异常类中的方法上
    @ExceptionHandler
    public R<String> exceptionHandler(SQLIntegrityConstraintViolationException ex){
        log.error(ex.getMessage());
        //这里涉及一个新方法   ex.getMessage().contains(此括号里写一个异常可能会出现的字符,) 最后判断出带有此字符串的都为异常
        if (ex.getMessage().contains("Duplicate entry")){
            String[] split = ex.getMessage().split(" ");
            return R.error("您写的"+split[2]+"已经存在");
        }else if (ex.getMessage().contains("cannot be null")){
            return R.error("您填写的字段不能为空");
        }else{
            return R.error("未知错误");

        }
    }
    @ExceptionHandler(CustomException.class)
    public R<String> exceptionHandler(CustomException ex){
        return R.error(ex.getMessage());
    }


//    @ExceptionHandler
//    public R<String> exceptionHandler1(Exception e){
//        return R.error("您写的用户名已存在");
//    }

}
